/*
 *  domain.h
 *  T3nsors2
 *
 *  Created by Michael Barriault on 10-06-16.
 *  Copyright 2010 University of Guelph. All rights reserved.
 *
 */

#ifndef DOMAIN_HEADER
#define DOMAIN_HEADER

#include <vector>
#include "macros.h"

namespace t3 {
	
	class domain {
	private:
		bool range;
		std::vector<int> *O;
		std::vector<double> *r;
		int count;
		domain(void);
		~domain(void);
	public:
		int N;
		int at(int);
		int size(void);
		int upto(int);
		static domain* init(int,...);
		double& min(int);
		double& max(int);
		double d(int);
		domain* retain(void);
		void release(void);
	};

	void check(t3::domain,t3::domain);
	void check(int,int);
}

#endif
